accelmap: Sort accels before interating over them in foreach()
authorTimm Bäder <mail@baedert.org>
Wed, 3 Jul 2019 08:07:21 +0000 (10:07 +0200)
committerTimm Bäder <mail@baedert.org>
Thu, 4 Jul 2019 06:35:42 +0000 (08:35 +0200)
gtk/gtkaccelmap.c

index 487018e392b1242c1855f6e6128cceab4256b5ae..0dda57104fece00191b9822c884fa850a3187de6 100644 (file)
@@ -155,6 +155,16 @@ accel_entry_equal (gconstpointer key1,
   return g_str_equal (entry1->accel_path, entry2->accel_path);
 }
 
+static int
+accel_entry_compare (gconstpointer a,
+                     gconstpointer b)
+{
+  const AccelEntry *entry1 = a;
+  const AccelEntry *entry2 = b;
+
+  return strcmp (entry1->accel_path, entry2->accel_path);
+}
+
 static inline AccelEntry*
 accel_path_lookup (const gchar *accel_path)
 {
@@ -817,6 +827,8 @@ gtk_accel_map_foreach (gpointer           data,
   g_return_if_fail (foreach_func != NULL);
 
   entries = g_hash_table_slist_values (accel_entry_ht);
+  entries = g_slist_sort (entries, accel_entry_compare);
+
   for (slist = entries; slist; slist = slist->next)
     {
       AccelEntry *entry = slist->data;